11610. Стоимость
букв
Задан текст. Только заглавные
латинские буквы от A до Z имеют стоимость. Стоимость A равна 1, стоимость B равна 2 и так
далее. Стоимость Z равна 26. Найдите произведение всех стоимостей букв в тексте.
Вход. Текст состоит из нескольких строк и содержит любые
символы.
Выход. Выведите произведение всех стоимостей букв в тексте по
модулю 109
+ 7.
Пример
входа |
Пример
выхода |
Eolymp chapter VI plus
,.,. $%4 $56 $^
USAco 456$%^$ 4%^$^ |
395010 |
строки
Обрабатываем последовательно
буквы текста. Если текущая буква – заглавная латинская, то находим ее
стоимость. Вычисляем произведение всех стоимостей букв в тексте по модулю 109 + 7.
Пример
В заданном примере имеются
следующие заглавные латинские буквы: E (5), V (22), I (9), U (21), S (19), A (1). Стоимость букв указана в скобках. Произведение всех
стоимостей равно (5 ∗ 22 ∗ 9 ∗ 21 ∗ 19 ∗ 1) mod 1000000007 = 395010.
Реализация алгоритма
Определим модуль, по которому будем вычислять произведение.
#define MOD 1000000007
Искомое произведение будем вычислять в переменной res.
res = 1;
Читаем текст строка за строкой.
while (getline(cin, s))
{
Обрабатываем текущую строку s.
for (i =
0; i < s.size(); i++)
{
Если текущий символ s[i] является заглавной латинской буквой, то вычисляем его стоимость c. Умножаем res на c.
if (('A' <=
s[i]) && (s[i] <= 'Z'))
{
c = s[i] - 'A' + 1;
res = (res * c) % MOD;
}
}
}
Выводим ответ.
cout << res << endl;